﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using PlugNT.Cms.Web.Zfb.js.Gateway;

namespace PlugNT.Cms.Web.Zfb.js
{
    public partial class Buy : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void BtnAlipay_Click(object sender, EventArgs e)
        {
            //业务参数赋值；
            string gateway = "https://www.alipay.com/cooperate/gateway.do?";	//支付接口
            string service = "create_direct_pay_by_user";                       //服务名称，这个是识别是何接口实现何功能的标识，请勿修改

            string seller_email = PlugNT.Custom.WebConfig.AlipaySelleremail;                     //商家签约时的支付宝帐号，即收款的支付宝帐号
            string sign_type = "MD5";                                           //加密类型,签名方式“不用改”
            string key = PlugNT.Custom.WebConfig.AlipayKey;                    //安全校验码，与partner是一组，获取方式是：用签约时支付宝帐号登陆支付宝网站www.alipay.com，在商家服务我的商家里即可查到。
            string partner = PlugNT.Custom.WebConfig.AlipayPartner;                                //商户ID，合作身份者ID，合作伙伴ID
            string _input_charset = "gb2312";                                   //编码类型，完全根据客户自身的项目的编码格式而定，千万不要填错。否则极其容易造成MD5加密错误。

            string show_url = "http://www.alipay.com/";                         //展示地址，即在支付页面时，商品名称旁边的“详情”的链接地址。

            string out_trade_no = TxtOrderno.Text.Trim();                       //客户自己的订单号，订单号必须在自身订单系统中保持唯一性
            string subject = TxtSubject.Text.Trim();                            //商品名称，也可称为订单名称，该接口并不是单一的只能买一样东西，可把一次支付当作一次下订单
            string body =  "充值：" + TxtTotal_fee.Text.Trim() + "元"+TxtBody.Text.Trim();                                  //商品描述，即备注
            //body = System.Web.HttpUtility.HtmlEncode(body);

            string total_fee = TxtTotal_fee.Text.Trim();                        //商品价格，也可称为订单的总金额

            //服务器通知url（Alipay_Notify.aspx文件所在路经），必须是完整的路径地址
            string notify_url = "http://www.plugnet.cn/Zfb/js/Alipay_Notify.aspx";
            //服务器返回url（Alipay_Return.aspx文件所在路经），必须是完整的路径地址
            string return_url = "http://www.plugnet.cn/Zfb/js/Alipay_Return.aspx";

            //构造数组；
            //以下数组即是参与加密的参数，若参数的值不允许为空，若该参数为空，则不要成为该数组的元素
            string[] para ={
            "service="+service,
            "partner=" + partner,
            "seller_email=" + seller_email,
            "out_trade_no=" + out_trade_no,
            "subject=" + subject,
            "body=" + body,
            "total_fee=" + total_fee, 
            "show_url=" + show_url,
            "payment_type=1",
            "notify_url=" + notify_url,
            "return_url=" + return_url
            };

            //支付URL生成
            string aliay_url = AliPay.CreatUrl(
                //gateway,//GET方式传递参数时请去掉注释
                para,
                _input_charset,
                sign_type,
                key
            );


            //以下是GET方式传递参数
            //Response.Redirect(aliay_url);


            //以下是POST方式传递参数
            Response.Write("<form name='alipaysubmit' method='post' action='https://www.alipay.com/cooperate/gateway.do?'>");
            Response.Write("<input type='hidden' name='service' value=" + service + ">");
            Response.Write("<input type='hidden' name='partner' value=" + partner + ">");
            Response.Write("<input type='hidden' name='seller_email' value=" + seller_email + ">");
            Response.Write("<input type='hidden' name='out_trade_no' value=" + out_trade_no + ">");
            Response.Write("<input type='hidden' name='subject' value=" + subject + ">");
            Response.Write("<input type='hidden' name='body' value=" + body + ">");
            Response.Write("<input type='hidden' name='total_fee' value=" + total_fee + ">");
            Response.Write("<input type='hidden' name='show_url' value=" + show_url + ">");
            Response.Write("<input type='hidden' name='return_url' value=" + return_url + ">");
            Response.Write("<input type='hidden' name='notify_url' value=" + notify_url + ">");
            Response.Write("<input type='hidden' name='payment_type' value=1>");
            Response.Write("<input type='hidden' name='sign' value=" + aliay_url + ">");
            Response.Write("<input type='hidden' name='sign_type' value=" + sign_type + ">");
            Response.Write("</form>");
            Response.Write("<script>");
            Response.Write("document.alipaysubmit.submit()");
            Response.Write("</script>");
        }
    }
}
